<?php
class UsersController extends AppController {

	var $name = 'Users';
	var $uses = array('UsersEquiposOperativo', 'User');
	var $helpers = array('Access');
	
	function sesion_activa(){
		$usuario_activo=$this->Access->getMy('username');
		//Verificacion de sesion del sistema
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
	}
	
	function index() {
		$this->sesion_activa();
		$this->User->recursive = 0;
		//die(var_dump($this->User));
		$this->set('users', $this->paginate());
	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Usuario no valido', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->set('user', $this->User->read(null, $id));
	}

	function add() {
		$this->sesion_activa();
		if (!empty($this->data)) {
			$this->User->create();
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('Usuario Guardado', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('El Usuario no se ha Guardado', true));
			}
		}
		$groups = $this->User->Group->find('list',array('fields'=>array('Group.id','Group.nombre')));
		
		$this->set(compact('groups'));
	}
	
	function facilitador($usuario = null, $grupo = null, $equipo = null){
		$this->sesion_activa();
		if (!empty($this->data)) {
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('Facilitador Actualizado', true));
				$this->redirect(array('controller'=>'pagos','action' => 'pago_facilitador',$this->data['User']['grupo'].'/'.$this->data['User']['equipo']));
			} else {
				$this->Session->setFlash(__('No se realizo la actualizacion.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->User->read(null, $usuario);			
		}
		$user = $this->data;
		$this->set(compact('user','grupo','equipo'));
	}

    function edit($id = null) {
    	$this->sesion_activa();
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Usuario no valido', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			//die(var_dump($this->data));
			$actual = $user['User']['password'];
			$nueva = $this->data['User']['passwords'];
				
			if($actual != $nueva){
				$this->data['User']['password']=$this->Auth->password($nueva);
			}
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('Usuario Actualizado', true));
				$group_id= $this->Access->getMy('group_id');
		        $user_id= $this->Access->getMy('id');
	                if($group_id=="1"){			
				       $this->redirect(array('action' => 'index'));
	                }else{
	                   $this->redirect(array('action' => 'bienvenido'));
	                }
			} else {
				$this->Session->setFlash(__('El Usuario no se actualizo', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->User->read(null, $id);
			//die(var_dump($this->data));
		}
		$groups = $this->User->Group->find('list',array('fields'=>array('Group.id','Group.nombre')));
		$eOperativos = $this->User->EquiposOperativo->find('all');
			
		$equipos = array();
		$equipos[] = "Seleccione un Equipo Operativo";
		foreach ($eOperativos as $equipo) {
			
			$zona = $this->User->EquiposOperativo->Zona->find('first',array('conditions'=>array('Zona.id'=>$equipo['EquiposOperativo']['zona_id'])));
			$equipos[$equipo['EquiposOperativo']['id']] = $zona['Municipio']['nombre'];						
		}

		$equipo_usuario = ($this->data['EquiposOperativo']==null)?0:$this->data['EquiposOperativo'][0]['id'];
		$user = $this->data;
		$this->set(compact('groups', 'equipos','equipo_usuario', 'user'));
	}

	function delete($id = null) {
		$this->sesion_activa();
		if (!$id) {
			$this->Session->setFlash(__('Usuario no valido', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->User->delete($id)) {
			$this->Session->setFlash(__('Usuario Eliminado', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('El Usuario no se elimino', true));
		$this->redirect(array('action' => 'index'));
	}
	
	function login() {	
		if ($this->Session->read('Auth.User')) {
			$this->Session->setFlash('Bienvenido!');
			$this->redirect(array('controller'=>'pages','action'=>'home'));
		}		
	}
	function logout() {
		$this->Session->setFlash('Ha cerrado sesion correctamente!');
		$this->redirect($this->Auth->logout());		
	}
	
	function bienvenido(){		
		$this->sesion_activa();
		$this->User->id = $this->Access->getMy('id');
		$this->User->saveField('ultimo_acceso',date('Y-m-d h:m:s'));
		$this->set('usuario',$this->User->read(null, $this->Access->getMy('id')));
	}
	
	function beforeFilter() {
	    parent::beforeFilter(); 
	    //$this->Auth->allowedActions = array('login', 'logout');
	}
	
	function contrasena($id = null) {
		$this->sesion_activa();
		
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Usuario Invalido', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			$user=$this->User->read(null, $id);
			$actual = $user['User']['password'];
			$nueva = $this->data['User']['passwords'];
			
			if($actual != $nueva){
				$this->data['User']['password']=$this->Auth->password($nueva);
			}						
			if($this->User->save($this->data)){				
				$this->Session->setFlash(__('Contrase&ntilde;a Cambiada', true));
				$this->redirect(array('controller'=>'users','action' => 'bienvenido'));
			}else{
				$this->Session->setFlash(__('La contrase&ntilde;a no fue guardada. Intente de nuevo.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->User->read(null, $id);
		}

		$user = $this->data;

		$this->set(compact('user'));
	}
	
	
	function get_facilitadores_json($eo = null){

		if( $eo != null ){
			$facilitadores_equipo = $this->UsersEquiposOperativo->find('list', array("fields"=>array("UsersEquiposOperativo.id", "UsersEquiposOperativo.user_id"),
				"conditions"=>array("UsersEquiposOperativo.equipos_operativo_id"=>$eo, "UsersEquiposOperativo.group_id"=>4)));
			$facilitadores;
			foreach ($facilitadores_equipo as $facilitador):
				$f = $this->User->read(null,$facilitador);
				$facilitadores[$f['User']['id']]=$f['User']['nombre_completo'];
			endforeach;
			
			$this->view = 'Json';
			$this->set(compact('facilitadores'));
			$this->set('json', 'facilitadores');
		}
	}
	
	function informes (){
		$this->sesion_activa();
	}
}
